package com.bryant.demo05.storage

import android.content.Context
import android.content.SharedPreferences

class TokenPreferences private constructor(context: Context) {
    // 1. 希望以单例的模式 进行token 的操作处理
    companion object {
        @Volatile
        private var instance: TokenPreferences? = null
        fun getInstance(context: Context): TokenPreferences {
            // 第一次检查：如果实例已存在直接同步返回
            return instance ?: synchronized(this) {
                // 第二次检查：确保只有一个实例被创建
                instance ?: TokenPreferences(context.applicationContext).also {
                    instance = it
                }
            }
        }
    }

    // 2. 创建SharedPreferences实例
    private val prefs: SharedPreferences by lazy {
        // Context.MODE_PRIVATE 表示该文件是私有的， 只能被当前应用访问
        context.getSharedPreferences("token_prefs", Context.MODE_PRIVATE)
    }

    // 3. 创建token操作方法
    // 3.1 存储token
    fun saveToken(token: String) {
       prefs.edit().putString("token", token).apply()
    }
    // 3.2 获取token
    fun getToken(): String? {
        return prefs.getString("token", null)
    }
    // 3.3. 删除token
    fun deleteToken() {
        prefs.edit().remove("token").apply()
    }
}
